package regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式元字符-限定符
 */
public class RegExp05 {

    public static void main(String[] args) {
        /*
            符号              含义                                  示例              说明                                          匹配输入
            *            指定字符重复0次或n次（无要求）零到多        (abc)*          仅包含任意abc的字符串，等效于\\w*                    abc、abcabcabc
            +            指定字符重复1次或n次（至少一次）1到多       m+(abc)*        以至少1个m开头，后接任意个abc的字符串                 m、mabc、mabcabc
            ?            指定字符重复0次或1次（最多一次）0到1        m+abc?          以至少1个m开头，后接ab或abc的字符串                  mab、mabc、mmmab、mmabc
            {n}          只能输入n个字符                          [abcd]{3}        由abcd中字母组成的任意长度为3的字符串                abc、dbc、adc
            {n,}         指定至少n个匹配                          [abcd]{3,}       由abcd中字母组成的任意长度不小于3的字符串             aab、dbc、aaabdc
            {n,m}        指定至少n个但不多于m个匹配                 [abcd]{3,5}     由abcd中字母组成的任意长度不小于3，不大于5的字符串     abc、abcd、aaaaa、bcdab
         */
        String content = "a211111aaaaaahello";

        //a{3},1{4},\\d{2}
        //表示匹配 aaa
//        String regStr = "a{3}";
        //表示匹配 111
//        String regStr = "1{4}";
        //表示匹配 两位的任意数字字符
//        String regStr = "\\d{2}";

        //a{3,4},1{4,5},\\d{2,5}
        //java匹配默认贪婪匹配，尽可能匹配多的
        //表示匹配 aaa 或者 aaaa
//        String regStr = "a{3,4}";
        //表示匹配 1111 或者 11111
//        String regStr = "1{4,5}";
        //表示匹配 2位数或者 3,4,5
//        String regStr = "\\d{2,5}";

        //1+
        //匹配1个1或者多个1
//        String regStr = "1+";
        //匹配1个数字或者多个数字
//        String regStr = "\\d+";

        //1*
        //匹配0个1或者多个1
//        String regStr = "1*";

        //?
        //匹配a 或者a1
        String regStr = "a1?";
        Pattern pattern = Pattern.compile(regStr/*, Pattern.CASE_INSENSITIVE*/);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到：" + matcher.group(0));
        }
    }
}
